package pathulit

import (
	"github.com/pkg/errors"
	"os"
	"path/filepath"
)

func ExePath() (string, error) {
	currentDir, err := os.Getwd()
	if err != nil {
		return "", errors.Wrap(err, "获取工作目录")
	}

	for {
		if _, err := os.Stat(filepath.Join(currentDir, "go.mod")); err == nil {
			return currentDir, nil // 发现 go.mod 文件，表示找到了工作目录
		}

		// 如果已经到达根目录，则退出循环
		if currentDir == "/" || currentDir == "\\" {
			break
		}

		currentDir = filepath.Dir(currentDir) // 向上一级目录移动
	}

	return "", errors.New("未找到工作目录")
}
